import { IPSModelObject } from '../ipsmodel-object';
import { IPSEditorItem } from './ipseditor-item';
import { IPSSysCss } from '../res/ipssys-css';
import { IPSSysDictCat } from '../res/ipssys-dict-cat';
import { IPSSysPFPlugin } from '../res/ipssys-pfplugin';

/**
 *
 * 子接口类型识别属性[editorType]
 * @export
 * @interface IPSEditor
 */
export interface IPSEditor extends IPSModelObject {
  /**
   * 直接Css样式
   * @type {string}
   */
  cssStyle: string;

  /**
   * 动态样式表
   * @type {string}
   */
  dynaClass: string;

  /**
   * 编辑器高度
   * @type {number}
   * @default 0.0
   */
  editorHeight: number;

  /**
   * 编辑器参数集合
   * @type {IModel}
   */
  editorParams: IModel;

  /**
   * 编辑器样式
   * @type {string}
   */
  editorStyle: string;

  /**
   * 编辑器类型
   * @type {string}
   */
  editorType: string;

  /**
   * 编辑器宽度
   * @type {number}
   * @default 0.0
   */
  editorWidth: number;

  /**
   * 对象标识属性[OBJECTIDFIELD]
   * @type {string}
   */
  objectIdField: string;

  /**
   * 对象名称属性[OBJECTNAMEFIELD]
   * @type {string}
   */
  objectNameField: string;

  /**
   * 对象值属性[OBJECTVALUEFIELD]
   * @type {string}
   */
  objectValueField: string;

  /**
   * 复合编辑器项集合
   *
   * @type {IPSEditorItem[]}
   */
  getPSEditorItems(): IPSEditorItem[] | null;

  /**
   * 复合编辑器项集合
   *
   * @type {IPSEditorItem[]}
   */
  get psEditorItems(): IPSEditorItem[] | null;

  findPSEditorItem(objKey: any): IPSEditorItem | null;

  /**
   * 界面样式表
   *
   * @type {IPSSysCss}
   */
  getPSSysCss(): IPSSysCss | null;

  /**
   * 界面样式表
   *
   * @type {IPSSysCss}
   */
  get psSysCss(): IPSSysCss | null;

  /**
   * 界面样式表（必须存在）
   *
   * @type {IPSSysCss}
   */
  getPSSysCssMust(): IPSSysCss;

  /**
   * 辅助输入词条分类
   *
   * @type {IPSSysDictCat}
   */
  getPSSysDictCat(): IPSSysDictCat | null;

  /**
   * 辅助输入词条分类
   *
   * @type {IPSSysDictCat}
   */
  get psSysDictCat(): IPSSysDictCat | null;

  /**
   * 辅助输入词条分类（必须存在）
   *
   * @type {IPSSysDictCat}
   */
  getPSSysDictCatMust(): IPSSysDictCat;

  /**
   * 前端扩展插件
   *
   * @type {IPSSysPFPlugin}
   */
  getPSSysPFPlugin(): IPSSysPFPlugin | null;

  /**
   * 前端扩展插件
   *
   * @type {IPSSysPFPlugin}
   */
  get psSysPFPlugin(): IPSSysPFPlugin | null;

  /**
   * 前端扩展插件（必须存在）
   *
   * @type {IPSSysPFPlugin}
   */
  getPSSysPFPluginMust(): IPSSysPFPlugin;

  /**
   * 编辑器输入提示
   * @type {string}
   */
  placeHolder: string;

  /**
   * 预置类型
   * @type {string}
   */
  predefinedType: string;

  /**
   * 多项文本分隔符[TEXTSEPARATOR]
   * @type {string}
   */
  textSeparator: string;

  /**
   * 多项值分隔符[VALUESEPARATOR]
   * @type {string}
   */
  valueSeparator: string;

  /**
   * 值类型[VALUETYPE]{SIMPLE|SIMPLES|OBJECT|OBJECTS}
   * @description 值模式 [编辑器值类型] {SIMPLE：简单值、 SIMPLES：简单值数组、 OBJECT：对象（Object）、 OBJECTS：对象数组（Object[]）、 USER：用户自定义（USER）、 USER2：用户自定义2（USER2） }
   * @type {( string | 'SIMPLE' | 'SIMPLES' | 'OBJECT' | 'OBJECTS' | 'USER' | 'USER2')}
   * @default SIMPLE
   */
  valueType: string | 'SIMPLE' | 'SIMPLES' | 'OBJECT' | 'OBJECTS' | 'USER' | 'USER2';

  /**
   * 禁用状态[DISABLED]
   * @type {boolean}
   * @default false
   */
  disabled: boolean;

  /**
   * 支持编辑
   * @type {boolean}
   * @default true
   */
  editable: boolean;

  /**
   * 只读状态[READONLY]
   * @type {boolean}
   * @default false
   */
  readOnly: boolean;
}
